﻿using System.Collections.Generic;

namespace SmartHYU_TestVersion.Life
{
    public class DepartInformationManager
    {
        // DeptInfoMgr Class.
        //
        // Usage
        //      Create Object
        //          m_DeptMgr = new DeptInfoMgr();
        //
        //      Using Object
        //          m_DeptMgr.GetData();
        //              For Get Name of Category
        //          m_DeptMgr.GetData().GetName();
        //              For Get Info of Dept.
        //          m_DeptMgr.GetData().GetDepts()[index].Get~~~();


        /*
         * DepartmentInformationManager HyuDepartments = new DepartmentInformationManager();
         * 
         * HyuDepartments.DepartmentCategories
         * HyuDepartments.DepartmentCategories.Name
         * HyuDepartments.DepartmentCategories.Skip(index).First().Departments.Skip(index).First().Name
         * HyuDepartments.DepartmentCategories.Skip(index).First().Departments.Skip(index).First().PhoneNumber
         * HyuDepartments.DepartmentCategories.Skip(index).First().Departments.Skip(index).First().Url
         * 
         */

        //ArrayList m_Category;

        // Public properties & private fields
        private List<DepartmentCategory> departmentCategories;
        public List<DepartmentCategory> DepartmentCategories
        {
            get { return departmentCategories; }
        }


        // Constructors
        public DepartInformationManager()
        {
            departmentCategories = new List<DepartmentCategory>();//ArrayList();
            DepartmentCategory category = new DepartmentCategory("Main Departments of University"); // translation?
            category.InsertDept("Office of International Cooperation", "0045", "http://dic.hanyang.ac.kr/");
            category.InsertDept("Hanyang Service Center", "1681", "http://sos.hanyang.ac.kr/");
            category.InsertDept("The Office of Academin Affairs", "0053", "http://www.hanyang.ac.kr/code_html/H1BA/");
            category.InsertDept("Undergraduate Team for Office of Academin Affairs", "0059", "http://www.hanyang.ac.kr/code_html/H1BA/");
            category.InsertDept("Hanyang Open World for Learning", "1809", "http://ctl.hanyang.ac.kr/");
            category.InsertDept("The Center for Leadership and Innovation", "2743", "http://cli.hanyang.ac.kr/");
            category.InsertDept("Admission Planning and Public Relation Team", "0073", "http://iphak.hanyang.ac.kr/");
            category.InsertDept("Admission Management Team", "0077", "http://iphak.hanyang.ac.kr/");
            category.InsertDept("Admission Officer Team", "1903", "http://iphak.hanyang.ac.kr/");
            category.InsertDept("Seoul e-Learning Center", "1401", "http://www.selc.or.kr/");
            category.InsertDept("International Language Institute", "1663", "http://www.hyili.hanyang.ac.kr/"); // 링크 바꿈
            category.InsertDept("HIT", "2169", "http://huhit.hanyang.ac.kr/");
            category.InsertDept("Administrative department of students’ dormitory", "1471", "http://www.dormitory.hanyang.ac.kr/"); // 링크 바꿈
            category.InsertDept("Office of students’ dormitory", "1488", "http://www.dormitory.hanyang.ac.kr/"); // 링크 바꿈
            departmentCategories.Add(category);

            category = new DepartmentCategory("Office of Student Affairs");
            category.InsertDept("Office of Student Affairs", "0086", "http://student.hanyang.ac.kr/");
            category.InsertDept("Military Service/Reserve Forces", "0088", "http://student.hanyang.ac.kr/");
            category.InsertDept("The Hanyang University Newspaper", "1442", "http://www.hynews.ac.kr/");
            category.InsertDept("Hanyang University Broadcasting Station", "1446", "http://hubs.hanyang.ac.kr/"); //언론행정팀
            category.InsertDept("The Hanyang Journal", "1450", "http://hanyangian.com/"); //언론행정팀-저널
            category.InsertDept("Career Service Center", "0091", "http://job.hanyang.ac.kr/");
            category.InsertDept("Conduct Reserches", "1498", "http://counseling.hanyang.ac.kr/");
            category.InsertDept("Committee of Scholarship and Welfare", "0094", "http://student.hanyang.ac.kr/");
            category.InsertDept("Center for Gender Equality", "1444", "http://help.hanyang.ac.kr/");
            departmentCategories.Add(category);

            category = new DepartmentCategory("Office of Information and Communications");
            category.InsertDept("College Graduate Information Team", "1414", "http://iic.hanyang.ac.kr/");
            category.InsertDept("Management Supporting Team", "1417", "http://iic.hanyang.ac.kr/");
            category.InsertDept("Infrastructure Management Team", "1427", "http://iic.hanyang.ac.kr/");
            category.InsertDept("Internet Strategy Team", "1762", "http://internet.hanyang.ac.kr/");
            departmentCategories.Add(category);

            category = new DepartmentCategory("The First/Second College of Engineering");
            category.InsertDept("Administrative Service Team for College of Engineering", "0295", "http://engineer.hanyang.ac.kr/"); // translation??
            category.InsertDept("Administrative Service Team for the First College of Engineering", "0156");
            category.InsertDept("School of Architecture", "0300", "http://www.hanyang.ac.kr/code_html/H3HADA");
            category.InsertDept("Department of Architectural Engineering", "0310", "http://www.hanyang.ac.kr/code_html/H3HAEA");
            category.InsertDept("Department of Civil and Environmental Engineering", "1726", "http://www.civil.hanyang.ac.kr/");
            category.InsertDept("Department of Civil and Environmental Engineering", "0320", "http://www.civil.hanyang.ac.kr/");
            category.InsertDept("Urban Planning and Engineering", "0330", "http://hyurban.hanyang.ac.kr/");
            category.InsertDept("Department of Geoenvironmental System Engineering", "0410", "http://geosys.hanyang.ac.kr/");
            category.InsertDept("Administrative Service Team for the Second College of Engineering", "1788");
            category.InsertDept("Department of Electronics and Communications Engineering", "0350");
            category.InsertDept("Graduate School of Electronics and Communications Engineering", "0360");
            category.InsertDept("Division of Computer Science and Engineering", "2380", "http://cs.hanyang.ac.kr/");
            category.InsertDept("Graduate School of Computer Science and Engineering", "2386");
            category.InsertDept("Department of Information System", "2385", "http://www.hanyang.ac.kr/code_html/H3HADE/");
            category.InsertDept("Department of Biomedical Engineering", "0340", "http://bme.hanyang.ac.kr/");
            category.InsertDept("Department of Electrical Bio Engineering", "0379", "http://ebe.hanyang.ac.kr/");
            category.InsertDept("Graduate School of Electrical Bio Engineering", "0340");
            category.InsertDept("Department of Biomedical Engineering", "0397", "http://bme.hanyang.ac.kr/");
            departmentCategories.Add(category);

            category = new DepartmentCategory("The Third/Fourth College of Engineering");
            category.InsertDept("Administrative Service Team for the Third College of Engineering", "2292");
            category.InsertDept("Materials Science and Engineering", "0389", "http://mse.hanyang.ac.kr/");
            category.InsertDept("Graduate School of Materials Science and Engineering", "0400");
            category.InsertDept("Division of Chemical and Bio Engineering", "0520");
            category.InsertDept("Chemical Engineering", "0480", "http://chemeng.hanyang.ac.kr/"); // major in
            category.InsertDept("Department of Organic and Nano Engineering", "0490", "http://textile.hanyang.ac.kr/");
            category.InsertDept("Life Engineering", "0521", "http://bioeng.hanyang.ac.kr/"); // major in life engineering
            category.InsertDept("Administrative Service Team for the Fourth College of Engineering", "2297");
            category.InsertDept("School of Mechanical Engineering", "0420", "http://me.hanyang.ac.kr/");
            category.InsertDept("Graduate School of Mechanical Engineering", "0440");
            category.InsertDept("Department of Nuclear Engineering", "0460", "http://nuclear.hanyang.ac.kr/");
            category.InsertDept("Department of Industrial Engineering", "0470", "http://ie.hanyang.ac.kr/");
            departmentCategories.Add(category);

            category = new DepartmentCategory("College of Medicine");
            category.InsertDept("Administrative Service Team", "0584", "http://medix.hanyang.ac.kr/");
            category.InsertDept("Department of Medicine", "1841", "http://medix.hanyang.ac.kr/");
            category.InsertDept("Department of Premedicine", "0590", "http://medix.hanyang.ac.kr/");
            category.InsertDept("Major in Anatomy and Cell Biology", "0600");
            category.InsertDept("Major in Physiology", "0610");
            category.InsertDept("Major in Biochemistry", "0620");
            category.InsertDept("Major in Pathology", "0630");
            category.InsertDept("Major in Microbiology", "0640");
            category.InsertDept("Major in Parasitology", "0681");
            category.InsertDept("Major in Pharmacology", "0650");
            category.InsertDept("Major in Preventive Medicine", "0660", "http://preventive.hanyang.ac.kr/");
            category.InsertDept("Major in Medical Genetics", "0670");
            category.InsertDept("Major in Biomedical Engineering", "0690");
            category.InsertDept("Major in Occupational Medicine", "0663");
            category.InsertDept("College of Nursing", "0700", "http://nursing.hanyang.ac.kr/");
            category.InsertDept("Assistant Clinical Training Room", "1780");
            departmentCategories.Add(category);

            category = new DepartmentCategory("College of Humanities");
            category.InsertDept("Administrative Service Team", "0723", "http://humanities.hanyang.ac.kr/");
            category.InsertDept("Department of Korean Language and Literature", "0730", "http://hykorea.hanyang.ac.kr/");
            category.InsertDept("Department of Chinese Language and Literature", "0770", "http://chinese.hanyang.ac.kr/");
            category.InsertDept("Department of English Language and Literature", "0740", "http://ell.hanyang.ac.kr/");
            category.InsertDept("Department of German Language and Literature", "0760", "http://german.hanyang.ac.kr/");
            category.InsertDept("Department of History", "0780", "http://hysarang.com/");
            category.InsertDept("Department of Philosophy", "0790", "http://phihum.hanyang.ac.kr/");
            departmentCategories.Add(category);

            category = new DepartmentCategory("College of Social Science");
            category.InsertDept("Administrative Service Team", "0813", "http://social.hanyang.ac.kr/");
            category.InsertDept("Division of Social Science", "1700", "http://social.hanyang.ac.kr/");
            category.InsertDept("Major in Political Science and Diplomacy", "0820", "http://psdcss.hanyang.ac.kr/");
            category.InsertDept("Major in Public Administration", "0830", "http://www.hypa.ac.kr/");
            category.InsertDept("Major in Sociology", "0840", "http://socio.hanyang.ac.kr/");
            category.InsertDept("Major in Journalism", "0850", "http://jmscss.hanyang.ac.kr/");
            category.InsertDept("Division of Tourism", "0860", "http://etourism.hanyang.ac.kr/");
            departmentCategories.Add(category);

            category = new DepartmentCategory("College of Natural Sciences");
            category.InsertDept("Administrative Service Team", "0882", "http://cns.hanyang.ac.kr/");
            category.InsertDept("Division of Natural Sciences", "1705", "http://cns.hanyang.ac.kr/");
            category.InsertDept("Major in Mathematics", "0890", "http://hymath.hanyang.ac.kr/");
            category.InsertDept("Major in Physics", "0910", "http://physics.hanyang.ac.kr/");
            category.InsertDept("Major in Chemistry", "0930", "http://chem.hanyang.ac.kr/");
            category.InsertDept("Major in Life Science", "0950", "http://lifescience.hanyang.ac.kr/");
            departmentCategories.Add(category);

            category = new DepartmentCategory("College of Policy Science/Law/Economics and Finance/Business");
            category.InsertDept("Administrative Service Team for College of Policy Science", "2762", "http://policy.hanyang.ac.kr/");
            category.InsertDept("Department of Policy", "2764", "http://policy.hanyang.ac.kr/");
            category.InsertDept("Administrative Service Team for College of Law", "0972", "http://law.hanyang.ac.kr/");
            category.InsertDept("Legal Advisor", "1009");
            category.InsertDept("Department of Law", "0980", "http://law.hanyang.ac.kr/");
            category.InsertDept("Administrative Service Team for College of Economics and Finance", "1012", "http://econ.hanyang.ac.kr/");
            category.InsertDept("Division of Economics and Finance", "1020", "http://econ.hanyang.ac.kr/");
            category.InsertDept("Administrative Service Team for School of Business", "1177", "http://biz.hanyang.ac.kr/");
            category.InsertDept("Division of Business Administration", "1040", "http://bba.hanyang.ac.kr/");
            departmentCategories.Add(category);

            category = new DepartmentCategory("College of Education");
            category.InsertDept("Administrative Service Team", "1092", "http://education.hanyang.ac.kr/");
            category.InsertDept("Department of Education", "1100", "http://hedu.hanyang.ac.kr/");
            category.InsertDept("Department of Educational Technology", "1120", "http://edutech.hanyang.ac.kr/");
            category.InsertDept("Department of Korean Language Education", "1130", "http://kledu.hanyang.ac.kr/");
            category.InsertDept("Department of English Language Education", "1140", "http://eledu.hanyang.ac.kr/");
            category.InsertDept("Department of Mathematics Education", "2630", "http://mathedu.hanyang.ac.kr/");
            category.InsertDept("Department of Computer Science Education", "1740", "http://comedu.hanyang.ac.kr/");
            category.InsertDept("Department of Applied Art Education", "1150", "http://artedu.hanyang.ac.kr/");
            departmentCategories.Add(category);

            category = new DepartmentCategory("College of Human Ecology/Music");
            category.InsertDept("Administrative Service Team for College of Human Ecology", "1173", "http://humanecology.hanyang.ac.kr/");
            category.InsertDept("Division of Human Ecology", "1171");
            category.InsertDept("Major in Interior Design", "1180", "http://interior.hanyang.ac.kr/");
            category.InsertDept("Major in Clothing and Textiles", "1190", "http://fashion.hanyang.ac.kr/");
            category.InsertDept("Major in Food and Nutrition", "1200", "http://fn.hanyang.ac.kr/");
            category.InsertDept("Administrative Service Team for College of Music", "1223", "http://music.hanyang.ac.kr/");
            category.InsertDept("Department of Voice", "1230", "http://canto.hanyang.ac.kr/");
            category.InsertDept("Department of Composition", "1250", "http://composition.hanyang.ac.kr/");
            category.InsertDept("Department of Piano", "1270", "http://piano.hanyang.ac.kr/");
            category.InsertDept("Department of String and Wind Instrument", "1280", "http://orch.hanyang.ac.kr/");
            category.InsertDept("Department of Korean Traditional Music", "1290", "http://kugak.hanyang.ac.kr/");
            category.InsertDept("Graduate School of Music", "1224");
            departmentCategories.Add(category);

            category = new DepartmentCategory("College of Physical Education/Arts/International Studies/General Studies");
            category.InsertDept("Administrative Service Team for College of Physical Education", "1313", "http://hpe.hanyang.ac.kr/");
            category.InsertDept("Department of Physical Activity", "1315");
            category.InsertDept("Department of Physical Education", "1320", "http://hpe.hanyang.ac.kr/");
            category.InsertDept("Department of Sports Industry", "2710", "http://sim.hanyang.ac.kr/");
            category.InsertDept("Administrative Service Team for College of Arts", "2732", "http://finearts.hanyang.ac.kr/");
            category.InsertDept("Major in Dramatics", "0800", "http://finearts.hanyang.ac.kr/");
            category.InsertDept("Major in Film", "0800", "http://cinema.hanyang.ac.kr/");
            category.InsertDept("Major in Dance", "1330", "http://finearts.hanyang.ac.kr/");
            category.InsertDept("Administrative Service Team for College of International Studies", "0281", "http://dis.hanyang.ac.kr/");
            category.InsertDept("Administrative Service Team for College of General Studies", "2272", "http://gs.hanyang.ac.kr/");
            departmentCategories.Add(category);

            category = new DepartmentCategory("Hanyang University Library");
            category.InsertDept("Information Support Team", "1357", "http://library.hanyang.ac.kr/paiknam/index.jsp");
            category.InsertDept("Digital Information Team", "1361", "http://library.hanyang.ac.kr/paiknam/index.jsp");
            category.InsertDept("Humanities Room", "1366", "http://library.hanyang.ac.kr/paiknam/index.jsp");
            category.InsertDept("Social Science Room", "1369", "http://library.hanyang.ac.kr/paiknam/index.jsp");
            category.InsertDept("Science Technology Room", "1371", "http://library.hanyang.ac.kr/paiknam/index.jsp");
            category.InsertDept("Music Resources Room", "1239", "http://library.hanyang.ac.kr/paiknam/index.jsp");
            category.InsertDept("Borrowing", "1387", "http://library.hanyang.ac.kr/paiknam/index.jsp");
            category.InsertDept("Return", "1359", "http://library.hanyang.ac.kr/paiknam/index.jsp");
            category.InsertDept("Office of Law Library", "1638", "http://lawlib.hanyang.ac.kr/law/index.jsp");
            category.InsertDept("Voluntary Committee Room of Law Library", "2787");
            category.InsertDept("Borrowing/Return of Law Library", "2786", "http://lawlib.hanyang.ac.kr/law/index.jsp");
            departmentCategories.Add(category);
        }



        /*
         * Following methods will be deleted because it is not a C# style
         *                                                -- Commented by Moda
         */
        public List<DepartmentCategory>/*ArrayList*/ GetData()
        {
            return departmentCategories;
        }
        /*
         * END : methods to be deleted
         */
    }

    public class DepartmentCategory
    {
        // Private fields
        //ArrayList m_Dept;
        private List<Department> departments;
        private string name;

        // Public properties
        public List<Department> Departments
        {
            get { return departments; }
        }

        public string Name
        {
            get { return name; }
        }

        public DepartmentCategory(string strName)
        {
            departments = new List<Department>();//ArrayList();
            name = strName;
        }


        public void InsertDept(string strName, string strPhone, string strURL = null)
        {
            departments.Add(new Department(strName, strPhone, strURL));
        }

        /*
         * Merged with previous method using "default argument"
         *              (string strName, string strPhone, string strURL = null)
         
        public void InsertDept(string strName, string strPhone)
        {
            departments.Add(new Department(strName, strPhone, null));
        }
         */

        /*
         * Following methods will be deleted because it is not a C# style
         *                                                -- Commented by Moda
         */
        public string GetName()
        {
            return name;
        }

        public List<Department> /*ArrayList*/ GetDepts()
        {
            return departments;
        }
        /*
         * END : methods to be deleted
         */
    }

    public class Department
    {
        // Private fields
        private string name;
        private string phoneNumber;
        private string url;

        // Public properties
        public string Name
        {
            get { return name; }
        }

        public string PhoneNumber
        {
            get { return phoneNumber; }
        }

        public string Url
        {
            get { return url; }
        }

        // Constructor
        public Department(string strName, string strPhone, string strURL)
        {
            name = strName;
            phoneNumber = strPhone;
            url = strURL;
        }


        /*
         * Following methods will be deleted because it is not a C# style
         *                                                -- Commented by Moda
         */
        public string GetName()
        {
            return name;
        }
        public string GetPhone()
        {
            return phoneNumber;
        }
        public string GetURL()
        {
            return url;
        }
        /*
         * END : methods to be deleted
         */
    }
}
